想要實作出有 default params 的 functional
意思是希望能有這樣的效果1
2
3
4
5
6
7
8myFunction({
name: 'Kurt',
age: 30
})
//=>
//name is Kurt
//age is 30
//sex is male
需要使用 ES6 的語法, 先來理解1
2
3
4
5
6
7
8
9let hash = {
name: 'Kurt',
age: 30
}
// 我們可以直接拿 hash 裡面的值宣告變數
let { name, age } = hash
console.log(name)// => 'Kurt'
console.log(age) // => 30
回到一開始想做的範例, 搭配這個特性定義 default params 的 function 即可完成, 也可以寫一些基本 error condition 的狀況1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23const myFunction = ({
name = 'Adam',
age = 10,
sex = 'male'
}={}) => {
if (typeof name !== 'string' ||
typeof age !== 'number' ||
typeof sex !== 'string') {
throw 'Params typo invalid'
}
console.log(name)
console.log(age)
console.log(sex)
}
myFunction({
name: 'Kurt',
age: 30
})
//=>
//name is Kurt
//age is 30
//sex is male
有幾個點注意:
- 不用照順序給參數
- 參數少給或多給都沒關係
- 多給的 params key 不存在會被省略
1 | myFunction({ sex: 'female', somekey: 'bla' }) |